package com.bignum;

import java.math.BigDecimal;

/**
 * @Author 小闽
 * @Date 2024/10/12 17:11
 * @PackageName: com.bignum
 * @ClassName: BigDecimal
 * @Description: 大数处理
 * @Version 1.0
 */
public class BigDecimal_ {
    public static void main(String[] args) {
        // 当我们需要保存一个精度很高的数时，double不够用
        // 可以是 BigDecimal
        //double d = 199999.1111111123245324235d;
        //System.out.println(d);
        BigDecimal bigDecimal = new BigDecimal("199999.1111111123245324235");
        BigDecimal bigDecimal1 = new BigDecimal("1.1");
        System.out.println(bigDecimal);

        // 1. 如果对 BigDecimal 进行运算，比如加减乘除，需要使用对应的方法
        // 2. 创建一个需要操作的 BigDecimal 然后调用相应的方法即可
        System.out.println(bigDecimal.add(bigDecimal1));
        System.out.println(bigDecimal.subtract(bigDecimal1));
        System.out.println(bigDecimal.multiply(bigDecimal1));
        //System.out.println(bigDecimal.divide(bigDecimal1)); // 可能抛出异常ArithmeticException
        // 在调用 divide 方法时，指定精度即可，BigDecimal.ROUND_CEILING
        // 如果有无限循环小数，就会保留分子的精度
        System.out.println(bigDecimal.divide(bigDecimal1,BigDecimal.ROUND_CEILING));
    }
}
